package com.swiot.biz.mapper;

import java.util.HashMap;
import java.util.List;
import com.swiot.biz.domain.DynamicTemplateData;
import org.apache.ibatis.annotations.Param;

/**
 * 动态模板数据Mapper接口
 * 
 * @author kingdom
 * @date 2025-09-04
 */
public interface DynamicTemplateDataMapper 
{
    /**
     * 查询动态模板数据
     * 
     * @param id 动态模板数据主键
     * @return 动态模板数据
     */
    public DynamicTemplateData selectDynamicTemplateDataById(String id);
    /**
     * 根据模板数据id查询动态模板数据
     *
     * @param dynamicTemplateData 动态模板数据主键
     * @return 动态模板数据
     */
    public DynamicTemplateData selectDynamicTemplateDataByDataId(DynamicTemplateData dynamicTemplateData);

    /**
     * 查询动态模板数据列表
     * 
     * @param dynamicTemplateData 动态模板数据 reportDate统计年份的数据
     * @return 动态模板数据集合
     */
    public List<DynamicTemplateData> selectDynamicTemplateDataList(DynamicTemplateData dynamicTemplateData);

    /**
     * 查询动态模板数据数量
     * @param dynamicTemplateData
     * @return
     */
    public Integer selectDynamicTemplateDataCount(DynamicTemplateData dynamicTemplateData);
    /**
     * 查询动态模板数据总和
     * @param dynamicTemplateData
     * @return
     */
    public HashMap<String,Object> selectDynamicTemplateDataSum(DynamicTemplateData dynamicTemplateData);

    /**
     * 新增动态模板数据
     * 
     * @param dynamicTemplateData 动态模板数据
     * @return 结果
     */
    public int insertDynamicTemplateData(DynamicTemplateData dynamicTemplateData);

    /**
     * 修改动态模板数据
     * 
     * @param dynamicTemplateData 动态模板数据
     * @return 结果
     */
    public int updateDynamicTemplateData(DynamicTemplateData dynamicTemplateData);

    /**
     * 删除动态模板数据
     * 
     * @param id 动态模板数据主键
     * @return 结果
     */
    public int deleteDynamicTemplateDataById(String id);

    /**
     * 根据表名和数据id删除动态模板数据
     * @param tableName
     * @param id
     * @return
     */
    public int deleteDynamicTemplateDataByDataId(@Param("tableName") String tableName, @Param("id") String id);

    /**
     * 批量删除动态模板数据
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDynamicTemplateDataByIds(String tableName, String[] ids);

    /**
     * 检查是否存在相同的动态模板数据
     * 
     * @param dynamicTemplateData 动态模板数据
     * @return 动态模板数据
     */
    public DynamicTemplateData selectDynamicTemplateDataByUnique(DynamicTemplateData dynamicTemplateData);

    /**
     * 根据表名动态插入数据（支持动态字段）
     * 
     * @param dynamicTemplateData 动态模板数据
     * @return 结果
     */
    public int insertDataByTableName(DynamicTemplateData dynamicTemplateData);

    /**
     * 根据表名动态更新数据（支持动态字段）
     * 
     * @param dynamicTemplateData 动态模板数据
     * @return 结果
     */
    public int updateDataByTableName(DynamicTemplateData dynamicTemplateData);

    /**
     * 根据表名和动态字段插入数据
     * 
     * @param tableName 表名
     * @param fieldRowCol 字段名数组
     * @param dataRowCol 数据值数组
     * @param dynamicTemplateData 其他固定字段数据
     * @return 结果
     */
    public int insertDynamicFields(String tableName, String[] fieldRowCol, String[] dataRowCol, DynamicTemplateData dynamicTemplateData);

    /**
     * 根据表名和动态字段更新数据
     * 
     * @param tableName 表名
     * @param fieldRowCol 字段名数组
     * @param dataRowCol 数据值数组
     * @param dynamicTemplateData 其他固定字段数据
     * @return 结果
     */
    public int updateDynamicFields(String tableName, String[] fieldRowCol, String[] dataRowCol, DynamicTemplateData dynamicTemplateData);
}
